home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #058 (19xx)(APS Electronic).zip / Bavarian #058 (19xx)(APS Electronic).adf / bild1.c < prev    next >
C/C++ Source or Header  |  1988-08-03  |  10KB  |  409 lines

  1. #include "exec/types.h"
  2. #include "exec/memory.h"
  3. #include "libraries/dos.h"
  4. #include "intuition/intuition.h"
  5. #include "graphics/view.h"
  6. #include "graphics/rastport.h"
  7. #include "lattice/stdio.h"
  8.  
  9. struct IntuitionBase *IntuitionBase;
  10. struct GfxBase       *GfxBase;
  11. struct IntuiMessage  *message;
  12. struct RastPort      *rp;
  13. struct ViewPort      *vp;
  14. struct Screen        *screen;
  15. struct Window        *w;
  16. long                 wait;
  17. int                  auf=2,allow=2,flag,i,x,y,code,kreuz,eig[11],summe[11],was[11];
  18. float                weiter[11];
  19. char                 info[1],filename[6]="Test ";
  20. char                 *a,buffer[80];
  21. char                 *interesse[11];
  22. ULONG                DosBase,file;
  23. BYTE                 laenge;
  24. int                  p[53];
  25. FILE                 *erg;
  26.  
  27. struct NewScreen ns =
  28.  { 0,0,640,256,4,0,1,HIRES,CUSTOMSCREEN,NULL,"Was soll ich werden ?",NULL,NULL};
  29.  
  30. struct NewWindow nw =
  31.  { 0,0,640,256,4,0,
  32.    MOUSEBUTTONS|MOUSEMOVE|CLOSEWINDOW,
  33.    REPORTMOUSE|WINDOWCLOSE|BORDERLESS|ACTIVATE,NULL,NULL,
  34.    " BERUFSWAHL  V1.0 ",NULL,NULL,0,0,0,0,CUSTOMSCREEN };
  35.  
  36. void iff(name)
  37. char name[];
  38. {
  39.  struct BitMap        *ptr;
  40.  BYTE *puffer[5];
  41.  
  42.  UBYTE depth;
  43.  char text[5];
  44.  BYTE rot,gruen,blau;
  45.  register int i;
  46.  
  47.  file = Open(name,MODE_OLDFILE);
  48.  
  49.   Read(file,&text[0],4);
  50.   Read(file,&text[0],4);
  51.   Read(file,&depth,1);
  52.   Read(file,&depth,1);
  53.  
  54.   ptr = rp->BitMap;
  55.   for(i = 0 ; i < 4 ; i++)
  56.    puffer[i] = ptr->Planes[i]+799;
  57.   Read(file,&text[0],6);
  58.   for(i=0 ; i < 32 ; i++)
  59.    {
  60.     Read(file,&rot,1);
  61.     Read(file,&gruen,1);
  62.     Read(file,&blau,1);
  63.     SetRGB4(&screen->ViewPort,i,rot/16,gruen/16,blau/16);
  64.    };
  65.  
  66.   for(i=0 ; i < 4 ; i++)
  67.    Read(file,puffer[i],ns.Width/8*200);
  68.   Close(file);
  69.   SetAPen(rp,0);
  70.   RectFill(rp,630,0,640,10);
  71.   SetAPen(rp,5);
  72.   Move(rp,10,235);
  73.   Text(rp,"© 5.10.1988 by MEGABYTECREW",27);
  74.   Move(rp,10,245);
  75.   Text(rp,"Programmer: Pöll Markus     Designer: Ahamer Martin",51);
  76. }
  77.  
  78. event()
  79. {
  80.  int class = 0;
  81.  if(message=(struct IntuiMessage *)GetMsg(w->UserPort))
  82.    {
  83.     class=message->Class;
  84.     code=message->Code;
  85.     ReplyMsg(message);
  86.    }
  87.  return(class);
  88. }
  89.  
  90. void neueFrage()
  91. {
  92.  SetAPen(rp,0);
  93.  Move(rp,0,90);
  94.  Text(rp,"                                                                             ",80);
  95.  SetAPen(rp,1);
  96.  Move(rp,0,90);
  97.  Read(file,&laenge,1);
  98.  Read(file,&buffer[0],laenge);
  99.  strncpy(info,&buffer[0],1);
  100.  Text(rp,&buffer[1],laenge-1);
  101.  kreuz=atoi(info);
  102. }
  103.  
  104. void neueFragen()
  105. {
  106.  int ii;
  107.  SetAPen(rp,0);
  108.  RectFill(rp,0,80,640,150);
  109.  SetAPen(rp,1);
  110.  for(ii=0;ii<5;ii++)
  111.   {
  112.    Move(rp,0,90+10*ii);
  113.    Read(file,&laenge,1);
  114.    Read(file,&buffer[0],laenge);
  115.    Text(rp,&buffer[0],laenge);
  116.   }
  117.  for(ii=0;ii<5;ii++)
  118.   {
  119.    Move(rp,320,90+10*ii);
  120.    Read(file,&laenge,1);
  121.    Read(file,&buffer[0],laenge);
  122.    Text(rp,&buffer[0],laenge);
  123.   }
  124. }
  125.  
  126. void controlmouse()
  127. {
  128.  int class;
  129.  flag=0;
  130.  while(flag==0)
  131.  {
  132.   class=event();
  133.   switch(class)
  134.   {
  135.    case MOUSEBUTTONS: allow=3-allow;
  136.                       if(allow==1) flag=1;
  137.                       break;
  138.    case CLOSEWINDOW:  ende();
  139.                       break;
  140.   };
  141.  }
  142.  x=(w->MouseX);
  143.  y=(w->MouseY);
  144. }
  145.  
  146. void auswerten1()
  147. {
  148.  controlmouse();
  149.  flag=0;
  150.  if((y>164) && (y<190))
  151.   {
  152.    if((x> 64) && (x<150)) { summe[kreuz]=summe[kreuz]+1; flag=1; };
  153.    if((x>168) && (x<254)) { summe[kreuz]=summe[kreuz]+2; flag=1; };
  154.    if((x>272) && (x<358)) { summe[kreuz]=summe[kreuz]+3; flag=1; };
  155.    if((x>376) && (x<462)) { summe[kreuz]=summe[kreuz]+4; flag=1; };
  156.    if((x>480) && (x<566)) { summe[kreuz]=summe[kreuz]+5; flag=1; };
  157.   }
  158.  if(flag==0) auswerten1();
  159. }
  160.  
  161. void auswerten2()
  162. {
  163.  controlmouse();
  164.  flag=0;
  165.  if((y>173) && (y<200))
  166.   {
  167.    if((x>155) && (x<239)) { p[i]=1; flag=1; };
  168.    if((x>401) && (x<485)) { p[i]=0; flag=1; };
  169.   }
  170.  if(flag==0) auswerten2();
  171. }
  172.  
  173. void auswerten3()
  174. {
  175.  controlmouse();
  176.  flag=0;
  177.  if((y>161) && (y<202))
  178.   {
  179.    if((x>159) && (x<234)) { p[i]=1; flag=1; };
  180.    if((x>406) && (x<481)) { p[i]=0; flag=1; };
  181.   }
  182.  if(flag==0) auswerten3();
  183. }
  184.  
  185. void ordnen()
  186. {
  187.  int copy;
  188.  float const;
  189.  
  190.  interesse[0]="Naturwissenschaft      ";
  191.  interesse[1]="Technik                ";
  192.  interesse[2]="EDV                    ";
  193.  interesse[3]="Medizin                ";
  194.  interesse[4]="Sozialarbeit           ";
  195.  interesse[5]="Unterrricht            ";
  196.  interesse[6]="Verwaltung             ";
  197.  interesse[7]="Kaufmännische Tätigkeit";
  198.  interesse[8]="Optische Gestaltung    ";
  199.  interesse[9]="Geisteswissenschaft    ";
  200.  
  201.  for(i=0;i<10;i++)
  202.   was[i]=i;
  203.  
  204.  flag=0;
  205.  while(flag==0)
  206.  {
  207.   flag=1;
  208.   for(i=0;i<10;i++)
  209.    if(summe[i] < summe[i+1])
  210.     {
  211.      copy=summe[i];
  212.      summe[i]=summe[i+1];
  213.      summe[i+1]=copy;
  214.      eig[10]=eig[i];
  215.      eig[i]=eig[i+1];
  216.      eig[i+1]=eig[10];
  217.      interesse[10]=interesse[i];
  218.      interesse[i]=interesse[i+1];
  219.      interesse[i+1]=interesse[10];
  220.      was[10]=was[i];
  221.      was[i]=was[i+1];
  222.      was[i+1]=was[10];
  223.      flag=0;
  224.     };
  225.  }
  226.  const=(float)summe[0]/8;
  227.  for(i=0;i<10;i++)
  228.   weiter[i]=summe[i]+eig[i]*const;
  229.  
  230.  flag=0;
  231.  while(flag==0)
  232.   {
  233.    flag=1;
  234.    for(i=0;i<10;i++)
  235.     if(weiter[i] < weiter[i+1])
  236.      {
  237.       was[10]=was[i];
  238.       was[i]=was[i+1];
  239.       was[i+1]=was[10];
  240.       const=weiter[i];
  241.       weiter[i]=weiter[i+1];
  242.       weiter[i+1]=const;
  243.       flag=0;
  244.      };
  245.   }
  246. }
  247.  
  248. void Ergebnis12()
  249. {
  250.  fprintf(erg," Berufsgebiet             Interessenspunkte               Eignungspunkte\n");
  251.  fprintf(erg," -----------------------------------------------------------------------\n");
  252.  for(i=0;i<10;i++)
  253.   fprintf(erg," %s     %d                     %d \n",interesse[i],summe[i],eig[i]);
  254. for(i=0;i<10;i++)
  255.  fprintf(erg,"%f ",weiter[i]);
  256. fprintf(erg,"\n");
  257. for(i=0;i<3;i++)
  258.  fprintf(erg,"%d ",was[i]);
  259. fprintf(erg,"\n");
  260. }
  261.  
  262. void Test1()
  263. {
  264.  iff("Testbild1");
  265.  file = Open("Fragen1",MODE_OLDFILE);
  266.  auf=3-auf;
  267.  while(i<300)
  268.  {
  269.   neueFrage();
  270.   auswerten1();
  271.   i++;
  272.  }
  273.  Close(file);
  274.  auf=3-auf;
  275. }
  276.  
  277. void Test2()
  278. {
  279.  SetAPen(rp,0);
  280.  RectFill(rp,0,10,640,256);
  281.  iff("Testbild2");
  282.  file = Open("Fragen2",MODE_OLDFILE);
  283.  auf=3-auf;
  284.  i=1;
  285.  while(i<53)
  286.  {
  287.   neueFrage();
  288.   auswerten2();
  289.   i++;
  290.  }
  291.  Close(file);
  292.  auf=3-auf;
  293.  eig[0]=p[8]+p[10]+p[14]+p[17]+p[23]+p[28]+p[35]+p[42];
  294.  eig[1]=p[9]+p[10]+p[14]+p[17]+p[31]+p[36]+p[46]+p[51];
  295.  eig[2]=p[10]+p[12]+p[14]+p[24]+p[30]+p[31]+p[36]+p[47];
  296.  eig[3]=p[11]+p[16]+p[20]+p[22]+p[33]+p[39]+p[41]+p[43];
  297.  eig[4]=p[4]+p[7]+p[18]+p[20]+p[22]+p[34]+p[39]+p[43];
  298.  eig[5]=p[4]+p[5]+p[20]+p[25]+p[29]+p[40]+p[45]+p[52];
  299.  eig[6]=p[1]+p[2]+p[15]+p[27]+p[28]+p[41]+p[47]+p[49];
  300.  eig[7]=p[1]+p[6]+p[14]+p[17]+p[31]+p[38]+p[50]+p[52];
  301.  eig[8]=p[3]+p[13]+p[21]+p[26]+p[32]+p[37]+p[42]+p[46];
  302.  eig[9]=p[1]+p[12]+p[19]+p[25]+p[28]+p[42]+p[44]+p[48];
  303. }
  304.  
  305. void Test3()
  306. {
  307.  int elemente=24,s[10];
  308.  file = Open(filename,MODE_OLDFILE);
  309.  auf=3-auf;
  310.  if(filename[4]==(2+48)) elemente=15;
  311.  if(filename[4]==(6+48)) elemente=20;
  312.  if(filename[4]==(8+48)) elemente=18;
  313.  
  314.  i=0;
  315.  while(i<elemente)
  316.  {
  317.   i++;
  318.   neueFragen();
  319.   auswerten3();
  320.  }
  321.  
  322.  switch(filename[4]-48)
  323.   {
  324.    case 2:  { s[1]=(p[1]==1)+(p[2]==1)+(p[4]==0)+(p[5]==0)+(p[7]==1)+(p[8]==1)+(p[10]==0)+(p[11]==0)+(p[13]==1)+(p[14]==1);
  325.               s[2]=(p[1]==0)+(p[3]==1)+(p[4]==1)+(p[6]==0)+(p[7]==0)+(p[9]==1)+(p[10]==1)+(p[12]==0)+(p[13]==0)+(p[15]==1);
  326.               s[3]=(p[2]==0)+(p[3]==0)+(p[5]==1)+(p[6]==1)+(p[8]==0)+(p[9]==0)+(p[11]==1)+(p[12]==1)+(p[14]==0)+(p[15]==0);
  327.               elemente=3;
  328.               break; }
  329.    case 6:  { s[1]=(p[1]==1)+(p[3]==1)+(p[7]==1)+(p[8]==0)+(p[11]==0)+(p[13]==0)+(p[17]==0)+(p[18]==1);
  330.               s[2]=(p[1]==0)+(p[4]==1)+(p[9]==1)+(p[10]==0)+(p[11]==1)+(p[14]==0)+(p[19]==0)+(p[20]==1);
  331.               s[3]=(p[2]==1)+(p[4]==0)+(p[6]==1)+(p[7]==0)+(p[12]==0)+(p[14]==1)+(p[16]==0)+(p[17]==1);
  332.               s[4]=(p[2]==0)+(p[5]==1)+(p[8]==1)+(p[9]==0)+(p[12]==1)+(p[15]==0)+(p[18]==0)+(p[19]==1);
  333.               s[5]=(p[3]==0)+(p[5]==0)+(p[6]==0)+(p[10]==1)+(p[13]==1)+(p[15]==1)+(p[16]==1)+(p[20]==0);
  334.               elemente=5;
  335.               break; }
  336.    case 8:  { s[1]=(p[1]==1)+(p[2]==1)+(p[4]==0)+(p[5]==0)+(p[7]==1)+(p[8]==1)+(p[10]==0)+(p[11]==0)+(p[13]==1)+(p[14]==1)+(p[16]==0)+(p[17]==0);
  337.               s[2]=(p[1]==0)+(p[3]==1)+(p[4]==1)+(p[6]==0)+(p[7]==0)+(p[9]==1)+(p[10]==1)+(p[12]==0)+(p[13]==0)+(p[15]==1)+(p[16]==1)+(p[18]==0);
  338.               s[3]=(p[2]==0)+(p[3]==0)+(p[5]==1)+(p[6]==1)+(p[8]==0)+(p[9]==0)+(p[11]==1)+(p[12]==1)+(p[14]==0)+(p[15]==0)+(p[17]==1)+(p[18]==1);
  339.               elemente=3;
  340.               break; }
  341.    default: { s[1]=(p[1]==1)+(p[3]==1)+(p[5]==1)+(p[7]==0)+(p[9]==0)+(p[11]==0)+(p[13]==1)+(p[15]==1)+(p[17]==1)+(p[19]==0)+(p[21]==0)+(p[23]==0);
  342.               s[2]=(p[1]==0)+(p[4]==0)+(p[6]==1)+(p[7]==1)+(p[10]==1)+(p[12]==0)+(p[13]==0)+(p[16]==0)+(p[18]==1)+(p[19]==1)+(p[22]==1)+(p[24]==0);
  343.               s[3]=(p[2]==1)+(p[3]==0)+(p[4]==1)+(p[8]==0)+(p[9]==1)+(p[10]==0)+(p[14]==1)+(p[15]==0)+(p[16]==1)+(p[20]==0)+(p[21]==1)+(p[22]==0);
  344.               s[4]=(p[2]==0)+(p[5]==0)+(p[6]==0)+(p[8]==1)+(p[11]==1)+(p[12]==1)+(p[14]==0)+(p[17]==0)+(p[18]==0)+(p[20]==1)+(p[23]==1)+(p[24]==1);
  345.               elemente=4;
  346.               break;
  347.                      }
  348.   }
  349.  
  350.  kreuz++;
  351.  for(i=1;i<elemente+1;i++)
  352.   {
  353.    Read(file,&laenge,1);
  354.    Read(file,&buffer[0],laenge);
  355.    fprintf(erg,"%s:   %d Punkte\n",buffer,s[i]);
  356.   }
  357.  Close(file);
  358.  auf=3-auf;
  359. }
  360.  
  361. void main()
  362. {
  363.  if((GfxBase = (struct GfxBase *)
  364.   OpenLibrary("graphics.library",0)) == 0) exit();
  365.  
  366.  if((IntuitionBase = (struct IntuitionBase *)
  367.   OpenLibrary("intuition.library",0)) == 0) exit();
  368.  
  369.  if ((screen = (struct Screen*) OpenScreen(&ns)) == NULL)
  370.   {
  371.    printf("Hilfe, kein Screen !!!!!\n");
  372.    exit();
  373.   }
  374.  
  375.  nw.Screen = screen;
  376.  w = (struct Window *) OpenWindow(&nw);
  377.  DosBase = OpenLibrary("dos.library",0);
  378.  rp = w -> RPort;
  379.  vp = &screen->ViewPort;
  380.  erg=fopen("Ergebnis","w");
  381.  Test1();
  382.  Test2();
  383.  ordnen();
  384.  Ergebnis12();
  385.  SetAPen(rp,0);
  386.  RectFill(rp,0,10,640,256);
  387.  kreuz=0;
  388.  iff("Testbild3");
  389.  filename[4]=was[0]+48;
  390.  Test3();
  391.  filename[4]=was[1]+48;
  392.  Test3();
  393.  filename[4]=was[2]+48;
  394.  Test3();
  395.  ende();
  396. }
  397.  
  398. ende()
  399. {
  400.  if(auf==1) Close(file);
  401.  fclose(erg);
  402.  CloseWindow(w);
  403.  CloseScreen(screen);
  404.  CloseLibrary(DosBase);
  405.  CloseLibrary(GfxBase);
  406.  CloseLibrary(IntuitionBase);
  407.  exit();
  408. }
  409.